package br.com.dispositivosmoveis.acompanhamentodeconta.repository;

import java.util.List;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteConstraintException;
import br.com.dispositivosmoveis.acompanhamentodeconta.Enums.SituacaoNumeroComanda;
import br.com.dispositivosmoveis.acompanhamentodeconta.abstracts.CrudRepository;
import br.com.dispositivosmoveis.acompanhamentodeconta.abstracts.NumeroComandaRepository;
import br.com.dispositivosmoveis.acompanhamentodeconta.model.NumeroComanda;

public class NumeroComandaRepositoryImpl extends CrudRepository<NumeroComanda>
		implements NumeroComandaRepository {

	@Override
	public Long insert(NumeroComanda entity) throws SQLiteConstraintException,
			Exception {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public void update(ContentValues values, String whereClause,
			String... whereArgs) throws SQLiteConstraintException, Exception {
		this.getWritableDatabase().update(NumeroComanda.TABLE_NAME, values, whereClause, whereArgs);
		
	}

	@Override
	public NumeroComanda obtain(int id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<NumeroComanda> getAll() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public NumeroComanda findByNumeroSituacao(String numero,
			SituacaoNumeroComanda situacaoNumeroComanda) {
		NumeroComanda numeroComanda = null;
		
		StringBuilder query = new StringBuilder("SELECT ");
		query.append(NumeroComanda.COLUMN_ID + ", ");
		query.append(NumeroComanda.COLUMN_NUMERO + ", ");
		query.append(NumeroComanda.COLUMN_SITUACAO + " ");
		query.append("FROM " + NumeroComanda.TABLE_NAME + " WHERE ");
		query.append(NumeroComanda.COLUMN_NUMERO + " = ? ");
		query.append("AND " + NumeroComanda.COLUMN_SITUACAO + " = ?");
		
		Cursor cursor = this.getReadableDatabase().rawQuery(query.toString(), new String[]{numero,situacaoNumeroComanda.getLabel()});
		
		cursor.moveToFirst();
		
		for(int i = 0; i< cursor.getCount(); i++){
			numeroComanda = new NumeroComanda();
			numeroComanda.setId(cursor.getInt(cursor.getColumnIndex(NumeroComanda.COLUMN_ID)));
			numeroComanda.setNumero(cursor.getString(cursor.getColumnIndex(NumeroComanda.COLUMN_NUMERO)));
			
			SituacaoNumeroComanda sitNumeroComanda = cursor.getString(cursor.getColumnIndex(NumeroComanda.COLUMN_SITUACAO)).equals(SituacaoNumeroComanda.D.getLabel())
					? SituacaoNumeroComanda.D 
							:  SituacaoNumeroComanda.I;
					
			numeroComanda.setSituacaoNumeroComanda(sitNumeroComanda);
			
			cursor.moveToNext();
		}
		
		cursor.close();
		
		return numeroComanda;
	}
}
